package cn.jellybmedia.system.controller;

import cn.jellybmedia.basic.utils.AjaxResult;
import cn.jellybmedia.basic.utils.QueryResult;
import cn.jellybmedia.system.domain.DictionaryDetail;
import cn.jellybmedia.system.query.DictionaryDetailQuery;
import cn.jellybmedia.system.service.IDictionaryDetailService;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;


/**======================================================================================
* @Description: 产品详情Controller层
* @Author: Mr.She
* @Version: 1.0
* @Date:  2022/7/1 8:21
======================================================================================*/
@RestController
@RequestMapping("/detail")
public class DictionaryDetailController {

    @Autowired
    private IDictionaryDetailService detailService;

    /**======================================================================================
    * @Title: findDictionaryType
    * @Description: 根据id查询数据,使用的是Restful风格
    * @Author: Mr.Zhang
    * @Version: 1.0
    * @Date:  2022/7/1 8:21
    * @Parameters: [id]
    * @Return cn.jellybmedia.system.domain.DictionaryDetail
    ======================================================================================*/
    @ApiOperation(value = "通过ID查询" )
    // PathVariable:获取地址中的占位符.根据名称获取二级或者多级路径的参数
    // ApiParam:打在参数前，对参数做描述
    @GetMapping("/{id}")
    public DictionaryDetail findDictionaryType(@ApiParam(name="员工表主键Id",required = true)@PathVariable ("id") Long id){
        return  detailService.loadById(id);
    }

   /**======================================================================================
   * @Title: loadAll
   * @Description: 产品类型高级查询全部
   * @Author: Mr.Zhang
   * @Version: 1.0
   * @Date:  2022/7/1 8:19
   * @Parameters: []
   * @Return java.util.List<cn.jellybmedia.system.domain.DictionaryDetail>
   ======================================================================================*/
    @GetMapping
    public List<DictionaryDetail> loadAll(){
        return  detailService.loadAll();
    }

   /**======================================================================================
   * @Title: findDictionaryType
   * @Description: 高级查询所有
   * @Author: Mr.Zhang
   * @Version: 1.0
   * @Date:  2022/7/1 8:20
   * @Parameters: [dictionaryDetailQuery]
   * @Return cn.jellybmedia.basic.utils.QueryResult<cn.jellybmedia.system.domain.DictionaryDetail>
   ======================================================================================*/
    // RequestBody:
    // 每个方法都有自己的基本CRUD注解,默认不写的话,就会取占有基本的
    @PostMapping
    public QueryResult<DictionaryDetail> findDictionaryType(@RequestBody DictionaryDetailQuery dictionaryDetailQuery) {
        System.out.println(dictionaryDetailQuery);
        return detailService.queryData(dictionaryDetailQuery);
    }

    /**======================================================================================
    * @Title: DictionaryDetail
    * @Description: 根据id进行删除
    * @Author: Mr.Zhang
    * @Version: 1.0
    * @Date:  2022/7/1 8:20
    * @Parameters: [id]
    * @Return cn.jellybmedia.basic.utils.AjaxResult
    ======================================================================================*/
    @DeleteMapping("/{id}")
    public AjaxResult DictionaryDetail(@PathVariable ("id") Long id){
        try {
            // 执行成功,返回Ajaxresult中数据
            detailService.remove(id);

            return  AjaxResult.getAjaxResult();

        }catch (Exception e){
            // 执行失败,进行返回,并返回提示信息
            e.printStackTrace();
            return  AjaxResult.error();
        }

    }

    /**======================================================================================
    * @Title: addOrUpt
    * @Description: 新增与修改方法
    * @Author: Mr.Zhang
    * @Version: 1.0
    * @Date:  2022/7/1 8:20
    * @Parameters: [dictionaryDetail]
    * @Return cn.jellybmedia.basic.utils.AjaxResult
    ======================================================================================*/
    @PutMapping
    public AjaxResult addOrUpt(@RequestBody DictionaryDetail dictionaryDetail){
        try {
            if (dictionaryDetail.getId() ==null){

                detailService.save(dictionaryDetail);
            }else {
                System.out.println(dictionaryDetail);
                detailService.update(dictionaryDetail);
            }
            return  AjaxResult.getAjaxResult();

        }catch (Exception e){
            // 执行失败,进行返回,并返回提示信息
            e.printStackTrace();
            return  AjaxResult.error();
        }
    }

    /**======================================================================================
    * @Title: batchDel
    * @Description: 批量删除
    * @Author: Mr.Zhang
    * @Version: 1.0
    * @Date:  2022/7/1 8:21
    * @Parameters: [ids]
    * @Return cn.jellybmedia.basic.utils.AjaxResult
    ======================================================================================*/
    @PatchMapping()
    public AjaxResult batchDel(@RequestBody Long[] ids){
        try {
            // 执行成功,返回Ajaxresult中数据
            detailService.batchDel(ids);
            return  AjaxResult.getAjaxResult();
        }catch (Exception e){
            // 执行失败,进行返回,并返回提示信息
            e.printStackTrace();
            return  AjaxResult.error();
        }
    }

}
